/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package compevol;

import java.util.Arrays;

/**
 *
 * @author vitor
 */
public class Cromossomo {

    public boolean genotipo[] = new boolean[16];
    //private Vector<Boolean> genotipo;
    double minValue;
    double maxValue;
    public Cromossomo(double minValue, double maxValue){
        this.minValue = minValue;
        this.maxValue = maxValue;
    }

    public void geraRandom() {
        for(int i = 0; i < genotipo.length; i++){
            // random = [0,1)
            genotipo[i] = ( Math.random() >= 0.5  ) ;

        }
    }


    //retorna a interpretacao real do array de booleans
    public double valor(){
        //usando a formula de mapeamento
        double x = minValue;
        double y = maxValue;
        double sum = 0;
        for(int j = 0; j < genotipo.length; j++){
                if (genotipo[j]){   // Na verdade é L-j no genotipo, pois varre inversamente
            //if (genotipo[genotipo.length - j]){
                sum += Math.pow(2,j);
            }
        }

        //formula do slide 15 da Aula 2b sobre mapeamento de float pra strings binarias
        return x + ((y-x)/(Math.pow(2,genotipo.length)-1))*sum;
    }


    @Override
    public String toString() {
        //return this.data.toString();
        return Arrays.toString(genotipo);
        //return genotipo.toString();
    }



}
